home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 5
/
Aminet 5 - March 1995.iso
/
Aminet
/
util
/
cli
/
capstest.lha
/
capstest.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-12-02
|
1KB
|
52 lines
;/* execute me to compile
dcc -ECONSOLE: -proto -pr -mS -mr -l0 -ocapstest capstest.c
quit
*
* $VER: CapsTest.c 1.0 (2.12.94)
*
* Public Domain by Lauri Aalto <lauri.aalto@fipnet.fi>
*
* Reads keyboard matrix and outputs 0/1 depending on caps lock key status.
*/
#include <exec/exec.h>
#include <dos/dos.h>
#include <devices/keyboard.h>
#include <pragmas/exec_pragmas.h>
#include <pragmas/dos_pragmas.h>
__geta4 void CapsTest() {
struct Library *SysBase;
struct Library *DOSBase;
struct IOStdReq *io;
struct MsgPort *port;
char *matrix;
SysBase = *((struct Library **)4);
if (DOSBase = OpenLibrary("dos.library", 36)) {
if (port = CreateMsgPort()) {
if (io = CreateIORequest(port, sizeof(struct IOStdReq))) {
if (!(OpenDevice("keyboard.device", 0, (struct IORequest *)io, 0))) {
if (matrix = AllocVec(20, MEMF_PUBLIC | MEMF_CLEAR)) {
io->io_Command = KBD_READMATRIX;
io->io_Data = matrix;
io->io_Length = 20;
DoIO((struct IORequest *)io);
if (matrix[12] & (1 << 2)) Write(Output(), "1\n", 2);
else Write(Output(), "0\n", 2);
FreeVec(matrix);
}
CloseDevice((struct IORequest *)io);
}
DeleteIORequest((struct IORequest *)io);
}
DeleteMsgPort(port);
}
CloseLibrary(DOSBase);
}
}
static const char version[] = "\0$VER: CapsTest 1.0 (" __COMMODORE_DATE__ ")";